package chapter01.part7;

import chapter01.part1.CountWordByLength;

import java.util.Optional;
import java.util.stream.Stream;

/**
 * 将 Optional 转换为 Stream
 * 场景: 利用返回 Optional 的方法 再次返回 Stream
 * 
 * @author insight 
 * @since 2021/7/19
 */
public class OptionalToStream {
    public static void main(String[] args) {
        Stream<String> words = CountWordByLength.getWordList().stream();
        // 为了练习 强行处理成 Optional
        words.map(Optional::of).filter(Optional::isPresent).map(Optional::get);
        // 上面使用到了不恰当的方式 isPresent & get
        // 优化一下
        // 因为如果为空 flatMap 会直接丢弃
        Stream<String> stream =
                words.map(Optional::of).flatMap(Optional::stream);
    }
}